const { log } = console
// 带有硬编码
const checkAge = (age) => {
  let min = 18
  return age >= min
}
// 柯里化就是解决硬编码的问题
// 硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践,与从外部获取数据或在运行时生成数据不同。 硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改

// 普通的纯函数
// const checkAge = (min, age) => {
//   return age >= min
// }

// log(checkAge(18, 20))//true
// log(checkAge(18, 24))//true
// log(checkAge(22, 20))//false
// log(checkAge(22, 24))//true

const checkAge = (min) => {
  return (age) => {
    return age >= min
  }
}
// 简洁版
const checkAge = (min) => (age) => age >= min
let checkAge18 = checkAge(18)
log(checkAge18(20)) // true
log(checkAge18(17)) // false
// 改造函数多个参数 => 调用一个函数只传递部分参数 => 返回新的函数 => 接受剩余参数并返回
